package com.jiangnan.warehouse_management.service;

import com.jiangnan.warehouse_management.dto.request.RegisterRequest;
import com.jiangnan.warehouse_management.dto.request.UpdatePasswordRequest;
import com.jiangnan.warehouse_management.dto.request.UpdateUserRequest;
import com.jiangnan.warehouse_management.dto.request.UserQueryRequest;
import com.jiangnan.warehouse_management.dto.response.LoginResponse.UserDTO;
import com.jiangnan.warehouse_management.dto.response.RegisterResponse;
import com.jiangnan.warehouse_management.dto.response.UserQueryResponse;

public interface UserService {
    
    /**
     * 根据用户名查找用户
     * @param username 用户名
     * @return 用户对象，如果不存在则返回null
     */
    UserDTO findByUsername(String username);

    /**
     * 用户注册
     * @param request 注册请求
     * @return 注册响应
     */
    RegisterResponse register(RegisterRequest request);

    /**
     * 查询用户列表
     * @param request 查询请求
     * @return 用户列表响应
     */
    UserQueryResponse listUsers(UserQueryRequest request);

    /**
     * 根据ID查询用户
     * @param id 用户ID
     * @return 用户信息
     */
    UserQueryResponse.QueryUserDTO findById(int id);

    /**
     * 更新用户密码
     * @param userId 用户ID
     * @param request 密码更新请求
     */
    void updateUserPwd(int userId, UpdatePasswordRequest request);

    /**
     * 更新用户信息
     * @param request 用户信息更新请求
     * @return 更新后的用户信息
     */
    UserQueryResponse.QueryUserDTO updateUserInfo(UpdateUserRequest request);

    /**
     * 删除用户
     * @param id 用户ID
     */
    void deleteUser(int id);
}